#ifndef __FUNC_H_
#define __FUNC_H_

#include <stdio.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>
#include<sqlite3.h>
#include<signal.h>

// typedef struct work{
// 	int id;
// 	char name[64];
// 	char duty[32];
// 	int package;
// 	int clocknum;
// 	char time[32];
// }WORKER;
// //用户类型
// typedef struct user{
// 	int tape;//1是管理员 0 是普通用户
// 	char name[32];
// 	char password[32];
// }USE;
// //消息发送
// typedef struct msg{
// 	int tip;//1 成功 0失败
// 	int op;//操作 方法
// 	USE use;
// 	WORKER worker; fla
// 	char data[512];
// }MSG;
// 收到1号登录行为 读取账号与密码,查询账号密码库,（成y败n）
// 收到2号注册行为 根据name查看是否已有，有返回n,然后根据 name（用户名） 
// text1（密码） text2（职位）text3(薪资)num(权限)添加（成y败n）
// 收到3号用户信息查询行为  首先检测用户权限 ，普通用户返回自己的信息，
// 管理员根据text1的内容来查询并以num返回需要发送的信息条数后，逐条发送。
// 收到4号历史查询包 首先检测用户权限 ，普通用户返回n，
// 管理员以num返回需要发送的信息条数后，逐条发送
// 收到5号用户信息修改行为 首先检测用户权限 非管理员只可修改自己的用户名与密码，（成y败n）
// （text1（要修改的参数名）text2(更改的值)）若检测到要修改别的信息返回n
// 管理员则可修改所有参数（text1(目标用户)，text2(要修改的参数名)，text3（更改的值））
// data->name[strlen((data->name))-1] = '\0';
// data->text1[strlen((data->text1))-1] = '\0';
// data->text2[strlen((data->text2))-1] = '\0';
// data->text3[strlen((data->text3))-1] = '\0';
typedef struct
{
    int flags;
    int num;
    char name[32];
    char text1[32];
    char text2[32];
    char text3[32];
}DATA;
char client_name[32];
int client_num;
int login_num; 

void log_out(int sockfd, DATA *data);
void title3( DATA *data);
void log_in(int sockfd, DATA *data);
void add(int sockfd, DATA *data);
void delete(int sockfd, DATA *data);
void history_find(int sockfd, DATA *data);
void ues_find(int sockfd, DATA *data);
void change(int sockfd, DATA *data);
void change_sp(int sockfd, DATA *data);
void title1();
void title2( DATA *data);

void regist(int sockfd, DATA *data);
void text(DATA *data);
void text1(DATA *data);
void delete_history(int sockfd, DATA *data);


#endif